#include <iostream>
#include "binarytree.h"

using namespace std;
void print(char c)
{
    cout << c;
}

int main()
{
    // 建立二叉树
    //       -
    //   a        *
    //          b   c
    auto pa = new BiTNode<char>{'a', nullptr, nullptr};
    auto pb = new BiTNode<char>{'b', nullptr, nullptr};
    auto pc = new BiTNode<char>{'c', nullptr, nullptr};
    auto pm = new BiTNode<char>{'*', pb, pc};
    auto ps = new BiTNode<char>{'-', pa, pm};

    
    auto T = ps;

    // 先序遍历
    Preorder(T, print);cout << endl;
    // 中序遍历
    Inorder(T, print);cout << endl;
    // 后序遍历
    Postorder(T, print);cout << endl;

    // 打印二叉树
    Print(T);

    // 节点数，叶子结点数，高度
    cout << "NodeCount: " << NodeCount(T) << endl;
    cout << "LeafCount: " << LeafCount(T) << endl;
    cout << "Depth: " << Depth(T) << endl;

    // 销毁二叉树
    Destroy(T);
    Print(T);

    // 建立二叉树
    BiTree<char> t = nullptr;
    t = CreateBinaryTree();
    Print(t);
    
    Destroy(t);

    return 0;
}